//按abc的顺序读取并打印文件❤

const fs=require('fs')
//用封装好的方法
// let dataA=fs.readFileSync('./data/a.txt','utf-8')
// console.log(dataA);
// let dataB=fs.readFileSync('./data/b.txt','utf-8')
// console.log(dataB)
// let dataC=fs.readFileSync('./data/c.txt','utf-8')
// console.log(dataC)

/**fs.readFile('./data/a.txt','UTF-8',(err,data)=>{
    if(err) throw err;
    console.log(data);
})
fs.readFile('./data/b.txt','UTF-8',(err,data)=>{
    if(err) throw err;
    console.log(data);
})
fs.readFile('./data/c.txt','UTF-8',(err,data)=>{
    if(err) throw err;
    console.log(data);
})

以上的方法 读取文件的顺序受计算机的影响时间片轮转问题是随机读取 */


//回调函数中套用回调函数
/*fs.readFile('./data/a.txt','UTF-8',(err,data)=>{
    if(err) throw err;
    console.log(data);
    fs.readFile('./data/b.txt','UTF-8',(err,data)=>{
        if(err) throw err;
        console.log(data);
        fs.readFile('./data/c.txt','UTF-8',(err,data)=>{
            if(err) throw err;
            console.log(data);
        })
    })
}) //--回调地狱
缺点：
  代码维护困难,
  对计算机伤害大
*/

//-->promise 是一个容器 里面存放着一个异步的代码 有两参数resolve(成功),reject(失败)

function readFile(url){
    return new Promise((resolve, reject) => {
        fs.readFile(url,'utf-8',(err,data)=>{
            if(err) reject(err)
            resolve(data)
        })
    })   
}
// readFile('./data/a.txt').then(data=>{
//     console.log(data);
//     return readFile('./data/b.txt')
// },err=>{
//     console.log('err')
// })
// .then(data=>{
//     console.log(data);
//     return readFile('./data/c.txt')
// })
// .then(data=>{
//     console.log(data);
// })


//async await es7语法是promise和generator和co的语法糖
//语法糖：vue v-bind(:) v-on(@)
// await 后面必须是一个promise 整个的返回值是resolve成功结果
//await readFile('./data/a.txt')
 
async function go(){
    let dataA=await readFile('./data/a.txt')
    console.log(dataA);
    let dataB=await readFile('./data/b.txt')
    console.log(dataB);
    let dataC=await readFile('./data/c.txt')
    console.log(dataC);
}
go()